package com.yunji.news.entity;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
import java.time.LocalDateTime;

/**
 * 分数线实体类
 *
 * @author yunji
 * @since 2024-11-25
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("score_lines")
public class ScoreLine {

    /**
     * 主键ID
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 院校ID
     */
    @NotNull(message = "院校ID不能为空")
    @TableField("school_id")
    private Long schoolId;

    /**
     * 专业ID
     */
    @TableField("major_id")
    private Long majorId;

    /**
     * 年份
     */
    @NotNull(message = "年份不能为空")
    @TableField("year")
    private Integer year;

    /**
     * 批次：专科、本科等
     */
    @Size(max = 50, message = "批次长度不能超过50字符")
    @TableField("batch")
    private String batch;

    /**
     * 科目类型：文科、理科、综合等
     */
    @Size(max = 50, message = "科目类型长度不能超过50字符")
    @TableField("subject_type")
    private String subjectType;

    /**
     * 最低分数
     */
    @TableField("min_score")
    private Integer minScore;

    /**
     * 最高分数
     */
    @TableField("max_score")
    private Integer maxScore;

    /**
     * 平均分数
     */
    @TableField("avg_score")
    private Double avgScore;

    /**
     * 位次信息
     */
    @Size(max = 100, message = "位次信息长度不能超过100字符")
    @TableField("rank_info")
    private String rankInfo;

    /**
     * 招生计划数
     */
    @TableField("plan_count")
    private Integer planCount;

    /**
     * 录取人数
     */
    @TableField("admit_count")
    private Integer admitCount;

    /**
     * 备注
     */
    @Size(max = 500, message = "备注长度不能超过500字符")
    @TableField("remark")
    private String remark;

    /**
     * 状态：0-禁用，1-启用
     */
    @NotNull(message = "状态不能为空")
    @TableField("status")
    private Integer status;

    /**
     * 创建时间
     */
    @TableField(value = "created_at", fill = FieldFill.INSERT)
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    @TableField(value = "updated_at", fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updatedAt;

    /**
     * 是否删除：0-未删除，1-已删除
     */
    @TableLogic
    @TableField("deleted")
    private Integer deleted;
}